var i = 0
function foo() {
    if (i) return i
    i = new Date()
    return i
}
console.log(foo());
setTimeout(() => {
    console.log(foo());
}, 1000)

// 惰性载入表示函数执行的分支只会在函数第一次调用的时候执行，在第一次调用过程中，
// 该函数会被覆盖为另一个按照合适方式执行的函数，这样任何对原函数的调用就不用再经过执行的分支了。


// var test = function () {
//     var t = new Date().getTime();
//     test = function () {
//         return t;
//     }
//     return test();
// }
// console.log(test());
// console.log(test());
// console.log(test());
// console.log(test());
